package com.sls.web.manager.recharge.service;

import java.util.List;

import com.sls.web.manager.page.Pagination;
import com.sls.web.manager.pojo.UserInfoVO;
import com.sls.web.manager.recharge.pojo.Area;
import com.sls.web.manager.recharge.querybean.AreaQuery;

/**
 * @author sxf
 * 
 */
public interface AreaService {
	public boolean insert(Area info, UserInfoVO userInfoVO) throws Exception;

	/**
	 * 参数:code,区域代码;areaName,区域名;parentCode,父级代码;<br>
	 * provinceName,省份名; g;rade,类别（1省，2市，3区） codeList,区域代码列表
	 * 
	 * @param query
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public Pagination<Area> queryPage(AreaQuery query, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 参数:code,区域代码;areaName,区域名;parentCode,父级代码;<br>
	 * provinceName,省份名; g;rade,类别（1省，2市，3区） codeList,区域代码列表
	 * 
	 * @param query
	 * @param userInfoVO
	 * @return 区域信息
	 * @throws Exception
	 */
	public List<Area> queryList(AreaQuery query, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 查找所有区域信息
	 * 
	 * @param grade
	 *            1,省;2,地级市;3,县;null,查询全部
	 * @param userInfoVO
	 * @return 区域信息
	 * @throws Exception
	 */
	public List<Area> queryAllList(Integer grade, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 从缓存中查找
	 * 
	 * @param query
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public Area queryOneInMemcache(AreaQuery query, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 从缓存中查找
	 * 
	 * @param query
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public List<Area> queryListInMemcache(AreaQuery query, UserInfoVO userInfoVO)
			throws Exception;

	/**
	 * 参数:code,区域代码;areaName,区域名;parentCode,父级代码;<br>
	 * provinceName,省份名; g;rade,类别（1省，2市，3区） codeList,区域代码列表
	 * 
	 * @param query
	 * @param userInfoVO
	 * @return
	 * @throws Exception
	 */
	public Area queryOne(AreaQuery query, UserInfoVO userInfoVO)
			throws Exception;

	public boolean update(Area info, UserInfoVO userInfoVO) throws Exception;

	public boolean delete(Area info, UserInfoVO userInfoVO) throws Exception;
}
